/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cursoexperto.jftf.jsf.pack;

import java.util.ArrayList;
import java.util.List;
import javax.el.ELContext;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cursoexperto.jftf.controller.CategoriaJpaController;
import org.cursoexperto.jftf.entidades.Categoria;

/**
 *
 * @author Jose Fernando
 */
public class CategoriaController {

    public CategoriaController() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        jpaController = (CategoriaJpaController) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null, "categoriaJpa");
    }
    private Categoria categoria = null;
    private List<Categoria> categoriaItems = null;
    private List<SelectItem> opcionesCat = null;
    private CategoriaJpaController jpaController = null;

    public Categoria getCategoria() {
        if (categoria == null) {
            categoria = new Categoria();
        }
        return categoria;
    }

    /**
     * Devuelve todas las categorias almacenadas en el bean o si son null
     * acceden a la base de datos a través del jpaController
     * @return Devuelve la lista de categoria correspondiente
     */
    public List<Categoria> getCategoriaItems() {
        if (categoriaItems == null) {
            categoriaItems = jpaController.findCategoriaEntities();
        }
        return categoriaItems;
    }

    /**
     * Devuelve todas los productos para la categoria dada ambos almacenados en el
     * bean
     * @return Devuelve la redirección
     */
    public String productList() {
        Long categoriaId = null;
        Categoria c = null;
        categoria = null;
        /*ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        c = (Categoria) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "item");*/
        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        categoria = (Categoria) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "item");
        //categoria = (Categoria) jpaController.findCategoria(categoriaId);
        //categoria = (Categoria) JsfUtil.getObjectFromRequestParameter("categoriaSelected", converter, null);
        return "producto_listado";
    }

    /**
     * Devuelve todas las categorias organizadas de la forma necesaria para ser
     * representados en una combo box
     * bean
     * @return Devuelve la lista de categorias
     */
    public List<SelectItem> getOpcionesCat() {
        if (opcionesCat == null) {
            opcionesCat = new ArrayList<SelectItem>();
        } else {
            opcionesCat.clear();
        }
        for (Categoria c : categoriaItems) {
            opcionesCat.add(new SelectItem(c.getId(), c.getCategoria()));
        }
        return opcionesCat;
    }
}
